Commit e245c1a664c368be43b086e7b0a8efc1dda19126
Parents : bdd3ce6
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Signature : T66BB85Valid, signed by author
Date : 2026-07-21T14:04:40+02:00
Network ID in interface telemetry
Changes
3 files changed, 7 insertions(+), 5 deletions(-)
Diff
diff --git a/sbapp/sideband/sense.py b/sbapp/sideband/sense.py
index 330353e7..b5fd359b 100644
--- a/sbapp/sideband/sense.py
+++ b/sbapp/sideband/sense.py
@@ -3140,7 +3140,7 @@ class Interfaces(Sensor):
def add_interface(self, name=None, type=None, reachable_on=None, port=None, lat=None, lon=None, height=None,
frequency=None, bandwidth=None, modulation=None, spreadingfactor=None, codingrate=None,
- channel=None, ifac_netname=None, ifac_netkey=None, transport=False, transport_id=None):
+ channel=None, ifac_netname=None, ifac_netkey=None, transport=False, transport_id=None, network_id=None):
if not type in self._d.InterfaceAnnouncer.DISCOVERABLE_INTERFACE_TYPES: raise TypeError("Interface type is not discoverable")
if not name: raise ValueError("No interface name specified")
@@ -3191,7 +3191,7 @@ class Interfaces(Sensor):
"frequency": frequency, "bandwidth": bandwidth, "modulation": modulation,
"spreadingfactor": spreadingfactor, "codingrate": codingrate, "channel": channel,
"lat": lat, "lon": lon, "height": height, "transport": transport, "transport_id": transport_id,
- "ifac_netname": ifac_netname, "ifac_netkey": ifac_netkey }
+ "ifac_netname": ifac_netname, "ifac_netkey": ifac_netkey, "network_id": network_id }
self.interfaces[name] = interface
@@ -3205,6 +3205,7 @@ class Interfaces(Sensor):
if iface["type"]: ifp[self._d.INTERFACE_TYPE] = iface["type"]
if iface["transport"]: ifp[self._d.TRANSPORT] = iface["transport"]
if iface["transport_id"]: ifp[self._d.TRANSPORT_ID] = bytes.fromhex(iface["transport_id"])
+ if iface["network_id"]: ifp[self._d.TRANSPORT_ID-1] = bytes.fromhex(iface["network_id"])
if iface["reachable_on"]: ifp[self._d.REACHABLE_ON] = iface["reachable_on"]
if iface["port"]: ifp[self._d.PORT] = iface["port"]
if iface["frequency"]: ifp[self._d.FREQUENCY] = iface["frequency"]
@@ -3234,11 +3235,12 @@ class Interfaces(Sensor):
"frequency": None, "bandwidth": None, "modulation": None,
"spreadingfactor": None, "codingrate": None, "channel": None,
"lat": None, "lon": None, "height": None, "transport": None, "transport_id": None,
- "ifac_netname": None, "ifac_netkey": None }
+ "ifac_netname": None, "ifac_netkey": None, "network_id": None }
if self._d.INTERFACE_TYPE in ifp: interface["type"] = ifp[self._d.INTERFACE_TYPE]
if self._d.TRANSPORT in ifp: interface["transport"] = ifp[self._d.TRANSPORT]
if self._d.TRANSPORT_ID in ifp: interface["transport_id"] = RNS.hexrep(ifp[self._d.TRANSPORT_ID], delimit=False)
+ if self._d.TRANSPORT_ID-1 in ifp: interface["network_id"] = RNS.hexrep(ifp[self._d.TRANSPORT_ID-1], delimit=False)
if self._d.REACHABLE_ON in ifp: interface["reachable_on"] = ifp[self._d.REACHABLE_ON]
if self._d.PORT in ifp: interface["port"] = ifp[self._d.PORT]
if self._d.FREQUENCY in ifp: interface["frequency"] = ifp[self._d.FREQUENCY]
diff --git a/sbapp/ui/map.py b/sbapp/ui/map.py
index 1ce30c53..bcaa2eef 100644
--- a/sbapp/ui/map.py
+++ b/sbapp/ui/map.py
@@ -684,7 +684,7 @@ class Map():
if_appearance[1] = own_appearance[1]
if_appearance[2] = own_appearance[2]
config_entry = None
- iface = { "name": ifn, "type": ife["type"], "transport": ife["transport"], "transport_id": ife["transport_id"], "network_id": ife["transport_id"],
+ iface = { "name": ifn, "type": ife["type"], "transport": ife["transport"], "transport_id": ife["transport_id"], "network_id": ife["network_id"],
"received": ifts, "last_heard": ifts, "stamp": None, "value": None, "hops": None, "heard_count": None,
"reachable_on": ife["reachable_on"], "port": ife["port"], "status": "available", "status_code": 1000,
"latitude": ife["lat"], "longitude": ife["lon"], "height": ife["height"], "if_appearance": if_appearance,
diff --git a/sbapp/ui/objectdetails.py b/sbapp/ui/objectdetails.py
index 12aae712..55cd1cc3 100644
--- a/sbapp/ui/objectdetails.py
+++ b/sbapp/ui/objectdetails.py
@@ -489,7 +489,7 @@ class RVDetails(MDRecycleView):
# if "transport_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Transport ID [b]<{if_data['transport_id']}>[/b]"})
self.entries.append({"icon": if_appearance[0], "text": f"Discovered [b]{if_type}[/b]{sc_str}", "on_release": pass_job})
if "transport" in if_data: self.entries.append({"icon": "transit-connection-variant", "text": f"Transport [b]{'enabled' if if_data['transport'] else 'disabled'}[/b]{tid_str if if_data['transport'] else ''}", "on_release": pass_job})
- if "network_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Network ID [b]<{if_data['network_id']}>[/b]", "on_release": pass_job})
+ if "network_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Network ID [b]<{if_data['network_id']}>[/b]", "on_release": pass_job}) if if_data["network_id"] != if_data["transport_id"] else None
if "discovered" in if_data: self.entries.append({"icon": "clock-check-outline", "text": f"First heard [b]{RNS.prettytime(time.time()-if_data['discovered'], compact=True)}[/b] ago", "on_release": pass_job})
if tcp_reachable: self.entries.append({"icon": "connection", "text": f"Reachable on [b]{if_data['reachable_on']}:{if_data['port']}[/b]", "on_release": pass_job})
if i2p_reachable: self.entries.append({"icon": "connection", "text": f"I2P B32 [b]{if_data['reachable_on']}[/b]", "on_release": pass_job})
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────